package com.benshou.bsoa.dto.feikong.req;

import jakarta.validation.constraints.NotBlank;
import lombok.Data;

/**
 * 公共请求参数实体类
 *
 * 该类表示API调用的公共请求参数。
 * 每个字段都包含校验注解和详细的中文注释。
 */
@Data
public class PublicRequestParams {

    /**
     * 请求时间戳，格式为 yyyy-MM-dd HH:mm:ss。
     * API服务端允许客户端请求时间误差为10分钟。
     */
    @NotBlank
    private String timestamp;

    /**
     * 公司编号，由平台提供。
     */
    @NotBlank
    private String compid;

    /**
     * 账号，由平台提供。
     */
    @NotBlank
    private String account;

    /**
     * 接口名称。
     */
    @NotBlank
    private String service;

    /**
     * 返回数据类型，默认为1。
     * 1表示XML，2表示JSON。
     */
    @NotBlank
    private String responseType;

    /**
     * 签名类型，默认为MD5。
     * 支持MD5签名和国密SM3签名。
     */
    @NotBlank
    private String signType;

    /**
     * 签名值。
     * MD5签名规则：md5(account + timestamp + key)。
     * SM3签名规则：sm3(account + timestamp + key)。
     * key由平台提供。
     */
    @NotBlank
    private String sign;

    /**
     * 会员ID（非必传，由胜意提供）。
     */
    private String hyid;

    /**
     * 本批次数据的唯一标识（非必传）。
     */
    private String uuid;

    /**
     * 具体业务数据（非必传）。
     */
    private String data;
}